/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2006，所有权利保留。
 * 
 * 文件名：	HButtonBrowser.java
 * 模块说明：	
 * 修改历史：
 * 2006-8-8 - lxm - 创建。
 */
package com.hd123.rumba.jsp;

import com.hd123.rumba.request.Dictionary;
import com.hd123.rumba.request.JspLib;

/**
 * 浏览选择按钮 | 服务端界面控件
 * <p>
 * 
 * 在基类的基础上，指定了默认的image、disableImage、type（=VALUE_TYPE_READWRITE）参数。
 * 
 * @author lxm
 * 
 */
public class HButtonBrowser extends StandardHButton {

  public HButtonBrowser(Dictionary dd, Object[] params) {
    super(dd, params);
    assignParamDefaultValues();
  }

  public HButtonBrowser(Object[] params) {
    super(params);
    assignParamDefaultValues();
  }

  private String conditionJS;
  private String paramsJS;

  /**
   * 属性：传入浏览窗口的约束条件。<br>
   * 对应参数名"conditionJS"，下一个参数为取值，类型为String。<br>
   * 符合Javascript语法，类型为RSCE（参见：RQueryTable.js）。
   */
  public String getConditionJS() {
    return conditionJS;
  }

  public void setConditionJS(String conditionJS) {
    this.conditionJS = conditionJS;
  }

  /**
   * 属性：传入浏览窗口的其它参数。<br>
   * 对应参数名"paramsJS"，下一个参数为取值，类型为String。<br>
   * 符合Javascript语法，类型为Object。
   */
  public String getParamsJS() {
    return paramsJS;
  }

  public void setParamsJS(String paramsJS) {
    this.paramsJS = paramsJS;
  }

  protected boolean readParam(String paramName, Object paramValue) {
    if (super.readParam(paramName, paramValue))
      return true;
    if ("conditionJS".equals(paramName)) {
      conditionJS = (String) paramValue;
      return true;
    }
    if ("paramsJS".equals(paramName)) {
      paramsJS = (String) paramValue;
      return true;
    }
    return false;
  }

  protected void buildHTML(int accessMode, int promptMode) {
    super.buildHTML(accessMode, promptMode);
    if (this.getA() != null)
      this.getA().setID(this.getField().getName() + "_browseButton");
  }

  public String buildJS() {
    StringBuffer sb = new StringBuffer();
    sb.append("var ctrl = $('" + this.getField().getName() + "').model;\n");
    sb.append("ctrl.bindButton($('" + this.getField().getName() + "_browseButton')," + " '"
        + this.getUrl() + "');\n");
    if (this.conditionJS != null)
      sb.append("ctrl.condition = " + this.conditionJS + ";\n");
    if (this.paramsJS != null)
      sb.append("ctrl.params = " + this.paramsJS + ";\n");
    return sb.toString();
  }

  private void assignParamDefaultValues() {
    if (this.getDisableImage() == null)
      this.setDisableImage(JspLib.getStaticContent("rumba/images/general/browser_dis.gif"));
    if (this.getImage() == null)
      this.setImage(JspLib.getStaticContent("rumba/images/general/browser.gif"));
    if (this.getHint() == null)
      this.setHint("选择");
    this.setType(VALUE_TYPE_READWRITE);
  }
}
